import java.util.HashMap;
import java.util.Map;

public class Solution13 {
    /**
     * 罗马数字转整数
     */
    public int romanToInt(String s) {
        Map<Character, Integer> map = new HashMap<>();
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
        char[] chars = s.toCharArray();
        int res = 0;
        int len = chars.length;
        for (int i = 0; i < chars.length; i++) {
            switch (chars[i]) {
                case 'I':
                    if (i + 1 < len && (chars[i + 1] == 'V' || chars[i + 1] == 'X')) {
                        res += map.get(chars[i + 1]) - map.get(chars[i]);
                        i++;
                    } else {
                        res += map.get(chars[i]);
                    }
                    break;
                case 'V':
                    res += map.get('V');
                    break;
                case 'X':
                    if (i + 1 < len && (chars[i + 1] == 'L' || chars[i + 1] == 'C')) {
                        res += map.get(chars[i + 1]) - map.get(chars[i]);
                        i++;
                    } else {
                        res += map.get(chars[i]);
                    }
                    break;
                case 'L':
                    res += map.get('L');
                    break;
                case 'C':
                    if (i + 1 < len && (chars[i + 1] == 'D' || chars[i + 1] == 'M')) {
                        res += map.get(chars[i + 1]) - map.get(chars[i]);
                        i++;
                    } else {
                        res += map.get(chars[i]);
                    }
                    break;
                case 'D':
                    res += map.get('D');
                    break;
                case 'M':
                    res += map.get('M');
                    break;
            }

        }
        return res;
    }
}
